package org.example.types.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 搜索请求参数
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SearchRequest implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 搜索关键词
     */
    private String keyword;

    /**
     * 搜索的频道列表
     */
    private List<String> channels;

    /**
     * 并发搜索数量
     */
    private Integer concurrency;

    /**
     * 强制刷新，不使用缓存
     */
    private boolean forceRefresh;

    /**
     * 结果类型：all(返回所有结果)、results(仅返回results)、merge(仅返回merged_by_type)
     */
    private String resultType;

    /**
     * 数据来源类型：all(全部来源)、tg(仅Telegram)、plugin(仅插件)
     */
    private String sourceType;

    /**
     * 指定搜索的插件列表
     */
    private List<String> plugins;

    /**
     * 指定返回的网盘类型列表
     */
    private List<String> cloudTypes;

    /**
     * 扩展参数，用于传递给插件的自定义参数
     */
    private Map<String, Object> ext;
}